// 进行axios实例的创建
import axios from 'axios'
import Vue from 'vue'
// 导入路由文件 拿到router 这个路由遥控器
import router from '@/router'
// 导入element-ui message
import { Message } from 'element-ui'

// 1, 创建实例
const instance = axios.create({
  baseURL: 'http://localhost:8888/api/private/v1/',
  headers: {}
})

// 2, 请求拦截器
instance.interceptors.request.use(config => {
  if (config.url === 'login') return config
  config.headers.authorization = window.sessionStorage.getItem('token')
  return config
})

// 3, 响应拦截器
instance.interceptors.response.use(config => {
  // 判断一下返回的内容 status 是 401 表示 token有问题
  if (config.data.meta.status === 401) {
    // 友情提示
    Message({
      type: 'error',
      message: '登录状态失效, 请重登陆',
      duration: 3000
    })

    router.push('/login')
    return config.data
  }
  return config.data
})

// 4, 创建一个对象
const plugin = {
  install () {
    Vue.prototype.$http = instance
    Vue.prototype.$get = instance.get
    Vue.prototype.$post = instance.post
    Vue.prototype.$put = instance.put
    Vue.prototype.$delete = instance.delete
  }
}

// 5, 导出 plugin
export default plugin
